// vite-plugin-pre-build.js
import fs from 'fs';
import path from 'path';
import LoaderUtils from './utils/readJson';
import sourceSet from './source-set';

const pluginName = 'vite-plugin-prebuild';
const pagesJsonPath = path.resolve(process.cwd(), 'src/pages.json');
// const pagesJsPath = path.resolve(process.cwd(), 'src/pages.js')


export default function (env) {
  return {
    name: pluginName,
    async configResolved(config) {
      // preBuildTasks(config);
      sourceSet(env).addFontScss();
    },
    async buildStart(options) {
      // 在这里可以执行一些构建开始前的任务
      // console.log('构建开始前的准备...');
    },
    configureServer(server) {
      // 监听文件变化
      server.watcher.on('all', (event, fileName) => {
        if (fileName === pagesJsonPath) {
          console.log(`${event}Detected change in ${pagesJsonPath}.`);
          // 重新执行预构建任务
          // preBuildTasks(server.config);
        }
      });
    },
  };
};

/**
 * 自定义的预构建任务
 */
// async function preBuildTasks(viteConfig) {
//   // 在这里可以执行一些初始化工作，例如注册监听器、预加载资源等
//   console.log('开始预构建任务...');

//   // 执行预构建任务

//   try {
//     // -------------------------
//     // 任务1. 同步生成 pages.js
//     // -------------------------
//     // 读取 pages.json 文件
//     const pagesData = LoaderUtils.readJsonFile(pagesJsonPath); // 替换成你的 pages.json 路径

//     // 将 pagesData 转换为 JavaScript 模块内容
//     const jsContent =
//       "/**\n"
//       + "* 此文件由 vite-plugin-prebuild 自动生成, 修改 pages.json 时会动态修改此文件\n"
//       + `* lastEditTime: ${new Date().toLocaleDateString()}\n`
//       + "*/\n"
//       + "export default () => {"
//       // + `return ${JSON.stringify(pagesData, null, 2)}`
//       + `return ${JSON.stringify(pagesData)}`
//       + "};"

//     // 写入 pages.js 文件
//     await fs.promises.writeFile(pagesJsPath, jsContent);
//     console.log(`[${pluginName}] 已写入同步文件 pages.js`);
//   } catch (error) {
//     console.error('Error generating pages.js:', error);
//   }
// }